#include "danmu.h"
#include<QLabel>
#include<QPropertyAnimation>
#include <QRandomGenerator>
danmu::danmu(QWidget *parent,QString str) : QWidget(parent)
{
    textLabel=new QLabel(parent);

    textLabel->setText(str);


    textLabel->setStyleSheet("color: white;");

    textLabel->setAttribute(Qt::WA_TranslucentBackground);
    textLabel->setWindowFlags(textLabel->windowFlags() | Qt::FramelessWindowHint | Qt::Dialog | Qt::WindowStaysOnTopHint);

    //移动到指定的位置
    QPoint globalPos = parent->mapToGlobal(QPoint(0, 0));
    int x=globalPos.x();
    int width=parent->width();
    //产生范围内的随机数，让弹幕的位置不局限

    int y=globalPos.y();
    int height=parent->height();

    int randomValue = QRandomGenerator::global()->bounded(0, height/3);
    textLabel->move(x+width,y+randomValue);
    textLabel->show();
    move(textLabel,parent);






}
void danmu::move(QLabel *label,QWidget* parent){
    //果然因为start并不是阻塞函数，所以用直接创建的方法，刚开始animation对象就被析构了，因此需要new。
    animation=new QPropertyAnimation(label,"pos",parent);

    animation->setDuration(3000);
    animation->setStartValue(label->pos());
    QPoint globalPos = parent->mapToGlobal(QPoint(0, 0));
    //获取到label的宽度。
    int labelWidth=label->width();
    globalPos.setX(globalPos.x()-labelWidth);
    globalPos.setY(label->pos().y());
    animation->setEndValue(globalPos);
    animation->start();
    //当动画执行完成之后，就调用他的析构函数
  connect(animation,&QPropertyAnimation::finished,this,&QObject::deleteLater);
}
danmu::~danmu(){
    delete animation;
    delete textLabel;
}


fontType::fontType(QString str, qint8 size, bool italic)
{
    QFont *font=new QFont;
    font->setPointSize(size);
    font->setItalic(italic);
}
